package com.sumainfor.wx.tenant.feign;

import com.sumainfor.common.util.JsonResult;
import com.sumainfor.common.utlis.Pager;
import com.sumainfor.wx.tenant.fallback.MarketFeignClientFallback;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.*;

import java.util.List;
import java.util.Map;

/**
 * @Author PuaChen
 * @Create 2019-01-25 14:36
 * 市场部调用
 */
@FeignClient(value = "TANGNEST-PC-MARKET", fallback = MarketFeignClientFallback.class)
public interface MarketFeignClient {

    ///////////////////////////////////////////////////////////////////////////
    // 小马 定义的接口
    ///////////////////////////////////////////////////////////////////////////

    /**
     * 新增业主
     *
     * @param params
     * @return
     */
    @PostMapping("/tenant/key/TcmktownerContorller/AddCommunity")
    JsonResult AddCommunity(@RequestBody Map<String, Object> params);

    @PostMapping("/tenant/key/TcmktownerContorller/getHousingInfoState")
    JsonResult getHousingInfoState(@RequestBody List<Map<String, Object>> params);


    ///////////////////////////////////////////////////////////////////////////
    // 陈 定义的服务接口
    ///////////////////////////////////////////////////////////////////////////

    /**
     * 查询上架房源
     *
     * @param params
     * @return
     */
    @RequestMapping("/tenant/key/housingList/findHousing")
    JsonResult findHousingDataList(@RequestParam("params") Map<String, Object> params);

    /**
     * 根据编号查询房源的详细信息
     *
     * @param infoId
     * @return
     */
    @RequestMapping("/tenant/key/housingList/getHousingInfoById")
    JsonResult getHousingInfoByInfoId(@RequestParam("infoId") String infoId);

    /**
     * 发起预约房源
     *
     * @param params
     * @return
     */
    @PostMapping("/tenant/key/housingList/makeHousing")
    JsonResult makeHousing(@RequestBody Map<String, Object> params);

    /**
     * 根据房源详表的编号查询 房源列表的数据
     *
     * @param params
     * @return
     */
    @PostMapping("/tenant/key/housingList/getHousingListByIds")
    JsonResult getHousingListByIds(@RequestBody Map<String, Object> params);

    /**
     * 通知消息回调接口 异步
     *
     * @param params
     * @return
     */
    @PostMapping("/tenant/key/signed/noticeStateResult")
    JsonResult noticeStateResult(@RequestBody Map<String, Object> params);

    /**
     * 获得房源预约列表数据
     *
     * @param tenId
     * @return
     */
    @PostMapping("/tenant/key/housingList/getMakeHousingList")
    JsonResult getMakeHousingList(@RequestParam("tenId") String tenId);

    /**
     * 评价一个预约单
     *
     * @param params
     * @return
     */
    @PostMapping("/tenant/key/housingList/commentMakeOrder")
    JsonResult commentMakeOrder(@RequestBody Map<String, Object> params);

    ///////////////////////////////////////////////////////////////////////////
    // 陆 定义的服务接口
    ///////////////////////////////////////////////////////////////////////////

    /**
     * 功能描述:
     * 根据微信端的openID获取是否收房成功
     *
     * @Author zhlu
     * @Description //TODO
     * @Date 2019/3/12 19:31
     */
    @GetMapping("/tenant/key/owner/getSigningWechatOwner")
    JsonResult getSigningWechatOwner(@RequestParam Map<String, Object> params);

    /**
     * 功能描述:
     * 获取所有的省份
     *
     * @Author zhlu
     * @Description //TODO
     * @Date 2019/3/13 11:13
     */
    @GetMapping("/tenant/key/area/getProvinceList")
    JsonResult getProvinceList(@RequestParam Map<String, Object> params);

    /**
     * 功能描述:
     * 根据省编号获取市列表
     *
     * @Author zhlu
     * @Description //TODO
     * @Date 2019/3/13 11:13
     */
    @GetMapping("/tenant/key/area/getCityList")
    JsonResult getCityList(@RequestParam Map<String, Object> params);

    /**
     * 功能描述:
     * 根据市编号获取区列表
     *
     * @Author zhlu
     * @Description //TODO
     * @Date 2019/3/13 11:13
     */
    @GetMapping("/tenant/key/area/getDistrictList")
    JsonResult getDistrictList(@RequestParam Map<String, Object> params);

    /**
     * 功能描述:
     * 根据区编号获取街道列表
     *
     * @Author zhlu
     * @Description //TODO
     * @Date 2019/3/13 11:13
     */
    @GetMapping("/tenant/key/area/getStreetList")
    JsonResult getStreetList(@RequestParam Map<String, Object> params);

    /**
     * 功能描述:
     * 根据openid获取当前业主托管房源总数
     *
     * @Author zhlu
     * @Description //TODO
     * @Date 2019/3/13 14:09
     */
    @GetMapping("/tenant/key/owner/getWechatOwnerCount")
    JsonResult getWechatOwnerCount(@RequestParam Map<String, Object> params);

    /**
     * 功能描述:
     * 根据业主openId获取业主房源情况
     *
     * @Author zhlu
     * @Description //TODO
     * @Date 2019/3/13 19:45
     */
    @GetMapping("/tenant/key/owner/getWechatOwnerHousing")
    JsonResult getWechatOwnerHousing(@RequestParam(value = "params") Map<String, Object> params, @RequestParam("pager") Pager pager);

    /**
     * 功能描述:
     * 根据业主房源主编号获取房源信息
     *
     * @Author zhlu
     * @Description //TODO
     * @Date 2019/3/13 19:45
     */
    @GetMapping("/tenant/key/owner/getWechatHousingMap")
    JsonResult getWechatHousingMap(@RequestParam Map<String, Object> params);

    /**
     * 查询等待签约的数据列表
     *
     * @return
     */
    @ResponseBody
    @PostMapping("/tenant/key/signed/getWaitSignList")
    JsonResult getWaitSignList(@RequestBody Map<String, Object> params);

    /**
     * 功能描述:
     * 根据合同编号获取合同状态
     * FlowStatus 电子合同签署状态  \n1.签署中\n2:签署完成\n3:失败\n4:拒签
     * IfFlowPay  电子合同是否支付     0无状态   1已完成未支付    2已完成已支付（该状态只有电子合同状态为2才有用）
     *
     * @Author zhlu
     * @Description //TODO
     * @Date 2019/3/20 10:32
     */
    @GetMapping("/tenant/key/signed/getPactStatus")
    JsonResult getPactStatus(@RequestParam Map<String, Object> params);

    /**
     * 查询签约流程第一个流程的数据
     *
     * @return
     */
    @PostMapping("/tenant/key/signed/getPactSignFlowOne")
    JsonResult getPactSignFlowOne(@RequestBody Map<String, Object> params);


    /**
     * 查询签约流程第二步数据;
     *
     * @param pactId
     * @return
     */
    @PostMapping("/tenant/key/signed/getPactSignFlowTwo")
    JsonResult getPactSignFlowTwo(@RequestParam("pactId") String pactId);


    /**
     * 查询签约流程第三步和第四步数据;
     *
     * @param pactId
     * @return
     */
    @PostMapping("/tenant/key/signed/getPactSignThreeAndFour")
    JsonResult getPactSignThreeAndFour(@RequestParam("pactId") String pactId);

    /**
     * 查询签约流程第五步数据;
     *
     * @param pactId
     * @return
     */
    @PostMapping("/tenant/key/signed/getPactSignFive")
    JsonResult getPactSignFive(@RequestParam("pactId") String pactId);

    /**
     * 功能描述:
     * 根据合同编号获取合同第八步资料
     *
     * @Author zhlu
     * @Description //TODO
     * @Date 2019/3/20 14:29
     */
    @GetMapping("/tenant/key/signed/getPactSignEight")
    JsonResult getPactSignEight(@RequestParam Map<String, Object> params);

    /**
     * 功能描述:
     * 根据租客编号获取租客合同列表
     *
     * @Author zhlu
     * @Description //TODO
     * @Date 2019/3/23 12:04
     */
    @GetMapping("/tenant/key/signed/getPactList")
    JsonResult getPactList(@RequestParam(value = "params") Map<String, Object> params, @RequestParam("pager") Pager pager);

    /**
     * 功能描述:
     * 根据业主账单编号获取业主银行卡资料、业主账单资料
     *
     * @Author zhlu
     * @Description //TODO
     * @Date 2019/4/1 19:59
     */
    @GetMapping("/tenant/key/owner/getOwnerDealPayMap")
    JsonResult getOwnerDealPayMap(@RequestParam Map<String, Object> params);

    /**
     * 功能描述:
     * 根据租客编号获取租客合同，然后找房源管家
     *
     * @Author zhlu
     * @Description //TODO
     * @Date 2019/4/6 18:48
     */
    @GetMapping("/tenant/key/keep/getTenantKepp")
    JsonResult getTenantKepp(@RequestParam Map<String, Object> params);


    @GetMapping("/tenant/key/pactAndHousingInfo/selectPaymentAndPact")
    JsonResult selectPaymentAndPact(@RequestParam Map<String, Object> params);


    ////////////////////////////////////////////////////////////
    //周聪定义的接口
    ///////////////////////////////////////////////////////////

    /**
     * <p>
     * 根据租客id查询房源信息
     * </p>
     *
     * @author: zhoucong
     * @since:
     */
    @PostMapping("/tenant/key/tenantHousingEva/getTenantHousing")
    JsonResult getTenantHousing(@RequestBody Map<String, Object> params);

    /**
     * <p>
     * 根据租客id查询合租人
     * </p>
     *
     * @author: zhoucong
     * @since:
     */
    @PostMapping("/tenant/key/tenantInformation/getTenantInformation")
    JsonResult getTenantInformation(@RequestBody Map<String, Object> params);

    /**
     * <p>
     * 新增合租人
     * </p>
     *
     * @author: zhoucong
     * @since:
     */
    @PostMapping("/tenant/key/tenantInformation/insertTenantInformation")
    JsonResult insertTenantInformation(@RequestBody Map<String, Object> params);

    /**
     * <p>
     * 删除合租人
     * </p>
     *
     * @author: zhoucong
     * @since:
     */
    @PostMapping("/tenant/key/tenantInformation/deleteTenantInformation")
    JsonResult deleteTenantInformation(@RequestBody Map<String, Object> params);

    /**
     * 功能描述:
     * 根据账单资料房源资料获取房源信息
     *
     * @Author zhlu
     * @Description //TODO
     * @Date 2019/4/28 16:21
     */
    @GetMapping("/tenant/key/paybill/getTrenantBillHousing")
    JsonResult getTrenantBillHousing(@RequestParam Map<String, Object> params);

    /**
     * 功能描述:
     * 根据租客编号获取租客当前合同列表
     *
     * @Author zhlu
     * @Description //TODO
     * @Date 2019/5/10 20:54
     */
    @ResponseBody
    @GetMapping("/tenant/key/housingList/getTenantPactList")
    JsonResult getTenantPactList(@RequestParam Map<String, Object> params);
}
